_require local "../../../../basis.smi"
_require       "../../../data/types/main/Types.ppg.smi"
_require       "../../../data/symbols/main/Loc.smi"
_require local "../../../data/builtin/main/BuiltinTypes.smi"
_require local "../../../data/symbols/main/RecordLabel.smi"
_require local "../../userlevelprimitive/main/UserLevelPrimitive.smi"

structure ReifiedTyData =
struct
  type ty = Types.ty
  type loc = Loc.loc

  val Int32Ty : ty
  val Int64Ty : ty
  val IntInfTy : ty
  val Word32Ty : ty
  val Word64Ty : ty
  val Word8Ty : ty
  val CharTy : ty
  val StringTy : ty
  val Real64Ty : ty
  val Real32Ty : ty
  val UnitTy : ty
  val PtrTy : ty
  val CodeptrTy : ty
  val ExnTy : ty
  val BoolTy : ty
  val BoxedTy : ty
  val RefTy : ty -> ty
  val ListTy : ty -> ty
  val ArrayTy : ty -> ty
  val VectorTy : ty -> ty
  val OptionTy : ty -> ty
  val RecordTy : (string * ty) list -> ty
  val TupleTy :  ty list -> ty

  val BtvIdTy : loc -> ty
  val TypIdTy : loc -> ty
(*
  val LongsymbolTy : unit -> ty
  val PosTy : unit -> ty
*)
  val ConSetTy : loc -> ty
  val ConSetEnvTy : loc -> ty
  val TyRepTy : loc -> ty
  val LabelTy : loc -> ty
  val ReifiedTyLabelMapTy : loc -> ty
  val ReifiedTyTy : loc -> ty
  val IdstatusTy : loc -> ty
  val EnvTy : loc -> ty

  val SENVMAPTY : loc -> ty -> ty
  val TypIDMapMapTy : loc -> ty -> ty
  val BounTypeVarIDMapMapTy : loc -> ty -> ty
  val RecordLabelMapMapTy : loc -> ty -> ty

end
